package com.own.component.common.base.service.item;

import com.own.component.common.base.entity.BaseBo;
import com.own.component.common.base.entity.po.BaseBean;
import com.own.component.common.base.entity.vo.BaseBeanVo;
import com.own.component.common.model.UpdateModel;

import java.util.List;

/**
 * BaseAddService
 *
 * @author chenxueli
 * @date 2022-06-15 03:14:15
 */
public interface BaseAddService<
        PO extends BaseBean,
        BO extends BaseBo<PO>,
        VO extends BaseBeanVo<PO>
        > {

    /**
     * 添加信息
     *
     * @param po 添加对象
     * @return 添加标识
     */
    default UpdateModel<VO> add(PO po) {
        return new UpdateModel<>(false);
    }

    /**
     * 添加信息
     *
     * @param bo 添加对象
     * @return 添加标识
     */
    default UpdateModel<VO> add(BO bo) {
        return add(bo.toPo());
    }

    /**
     * 添加信息
     *
     * @param poList 添加对象列表
     * @return 添加标识
     */
    default UpdateModel<List<VO>> addPoBatch(List<PO> poList) {
        return new UpdateModel<>(false);
    }

    /**
     * 添加信息
     *
     * @param boList 添加对象列表
     * @return 添加标识
     */
    default UpdateModel<List<VO>> addBatch(List<BO> boList) {
        return new UpdateModel<>(false);
    }

    /**
     * 批量插入数据
     *
     * @param list 数据列表
     * @return 影响行数
     */
    int batchInsert(List<PO> list);

}
